﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

using MySql.Data.MySqlClient;

namespace MakeIT.MiraPark.Negocios
{
    public static partial class ModelBO
    {

        public static void getPerfilXUsuarios(PerfilVO perfilVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("SELECT IdPerfil, IdUsuario ");
            query.AppendLine("FROM perfilxusuario ");
            query.AppendLine("WHERE IdPerfil = ?IdPerfil ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdPerfil", perfilVO.idPerfil);

            MySqlDataReader reader = null;
            try
            {
                cmd.Connection.Open();

                reader = cmd.ExecuteReader();

                perfilVO.perfilxUsuarioVOs.Clear();

                while (reader.Read())
                {
                    PerfilxUsuarioVO perfilxUsuarioVO = PerfilxUsuarioVO.CreatePerfilxUsuarioVO();
                    perfilxUsuarioVO.idPerfil = reader.GetInt32("IdPerfil");
                    perfilxUsuarioVO.idUsuario = reader.GetInt32("IdUsuario");

                    perfilVO.perfilxUsuarioVOs.Add(perfilxUsuarioVO);
                }
                reader.Close();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }
        }

        public static void getPerfilXUsuarios(UsuarioVO usuarioVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("SELECT IdPerfil, IdUsuario ");
            query.AppendLine("FROM perfilxusuario ");
            query.AppendLine("WHERE IdUsuario = ?IdUsuario ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdUsuario", usuarioVO.idUsuario);

            MySqlDataReader reader = null;
            try
            {
                cmd.Connection.Open();

                reader = cmd.ExecuteReader();

                usuarioVO.perfilxUsuarioVOs.Clear();

                while (reader.Read())
                {
                    PerfilxUsuarioVO perfilxUsuarioVO = PerfilxUsuarioVO.CreatePerfilxUsuarioVO();
                    perfilxUsuarioVO.idPerfil = reader.GetInt32("IdPerfil");
                    perfilxUsuarioVO.idUsuario = reader.GetInt32("IdUsuario");

                    usuarioVO.perfilxUsuarioVOs.Add(perfilxUsuarioVO);
                }
                reader.Close();
            }
            catch (Exception ex){ throw ex; }
            finally { cmd.Connection.Close(); }
        }

/*        public static void setPerfilXUsuarios(List<PerfilxUsuarioVO> perfilxUsuarioVOs)
        {
            foreach (PerfilxUsuarioVO perfilxUsuarioVO in perfilxUsuarioVOs)
            {
                setPerfilXUsuario(perfilxUsuarioVO);
            }
        }

        public static void setPerfilXUsuario(PerfilxUsuarioVO perfilxUsuarioVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("UPDATE perfilxusuario ");
            query.AppendLine("SET Visivel=?Visivel, Habilitado=?Habilitado ");
            query.AppendLine("WHERE IdPerfil=?IdPerfil and IdUsuario=?IdUsuario ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdPerfil", usuarioxObjetoVO.idUsuario);
            cmd.Parameters.AddWithValue("?IdUsuario", usuarioxObjetoVO.idObjeto);
            cmd.Parameters.AddWithValue("?Visivel", usuarioxObjetoVO.visivel);
            cmd.Parameters.AddWithValue("?Habilitado", usuarioxObjetoVO.habilitado);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }
*/
        public static void newPerfilXUsuarios(List<PerfilxUsuarioVO> perfilxUsuarioVOs)
        {
            foreach (PerfilxUsuarioVO perfilxUsuarioVO in perfilxUsuarioVOs)
            {
                newPerfilXUsuario(perfilxUsuarioVO);
            }
        }

        public static long newPerfilXUsuario(PerfilxUsuarioVO perfilxUsuarioVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("INSERT INTO perfilxusuario ");
            query.AppendLine("SET IdPerfil=?IdPerfil, IdUsuario=?IdUsuario ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdUsuario", perfilxUsuarioVO.idUsuario);
            cmd.Parameters.AddWithValue("?IdPerfil", perfilxUsuarioVO.idPerfil);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
                return cmd.LastInsertedId;
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }

        public static void delPerfilXUsuarios(List<PerfilxUsuarioVO> perfilxUsuarioVOs)
        {
            foreach (PerfilxUsuarioVO perfilxUsuarioVO in perfilxUsuarioVOs)
            {
                delPerfilXUsuario(perfilxUsuarioVO);
            }
        }
        public static void delPerfilXUsuario(PerfilxUsuarioVO perfilxUsuarioVO)
        {
            StringBuilder query = new StringBuilder();

            query.AppendLine("DELETE FROM perfilxusuario ");
            query.AppendLine("WHERE IdPerfil=?IdPerfil and IdUsuario=?IdUsuario ");

            MySqlCommand cmd = getConnection();
            cmd.CommandText = query.ToString();

            cmd.Parameters.AddWithValue("?IdUsuario", perfilxUsuarioVO.idUsuario);
            cmd.Parameters.AddWithValue("?IdPerfil", perfilxUsuarioVO.idPerfil);

            try
            {
                cmd.Connection.Open();

                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
            finally { cmd.Connection.Close(); }

        }
    }
}
